/*
 *1)两个参数，一定要填写完整路径，要加./
    fs.readFile('./fs.txt',function(err, data) {
    	if(err){
    		throw(err);
    	}
    	console.log(2);
    	res.end(data);
    });
    
 * 2)stat检测状态
     fs.stat('./album/a',function(err, data) {
 	//检查路径是不是一个文件夹
    	console.log(data.isDirectory());//true
    });
 * 3)读取文件夹中的所有文件及文件夹
 *  	fs.readdir('./album',function(err, files){
	   //files是一个数组，会罗列出来所有文件和文件夹,不区分开
	   //[ '0.jpg','1.jpg','1.txt','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg','7.jpg','8.jpg','9.jpg','a','b' ]
		console.log(files);
	});
	//期望将album中的文件夹输出,但是这种for循环中嵌套一个异步函数，特别容易出错
	var arr = [];
	fs.readdir('./album',function(err, files){
	   //files是一个数组，会罗列出来所有文件和文件夹,不区分开
		for(var i = 0; i < files.length; i++) {
			var thefile =  files[i];
			fs.stat('./album/'+thefile,function(err, data) {
				if(data.isDirectory()){
					arr.push(thefile);
					console.log(arr);        //['b'],['b', 'b']
				}
			})
		}
		
	});
	
 *  4)例子，将异步变成同步
 *   //for循环不行，要想办法使得一个文件判断完毕后才会执行下一个文件的判断
     fs.readdir('./album', function(err, files) {
    	var arr = [];
    	(function iterator(i) {
    		if(i == files.length){
    		    console.log(arr);  //['a', 'b']
    			return ;
    		}
    		fs.stat('./album/'+files[i], function(err, data) {
    			if(data.isDirectory()){
    				arr.push(files[i]);
    			}
    			iterator(++i);//注意i++不行会死循环
    		});
    	})(0);
    });
 * */
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
	res.writeHead(200,{"content-type":"text/html;charset=UTF8"});
	if(req.url == "/favicon.ico"){
		return ;
	}
    //for循环不行，要想办法使得一个文件判断完毕后才会执行下一个文件的判断
    fs.readdir('./album', function(err, files) {
    	var arr = [];
    	(function iterator(i) {
    		if(i == files.length){
    		    console.log(arr);  //['a', 'b']
    			return ;
    		}
    		fs.stat('./album/'+files[i], function(err, data) {
    			if(data.isDirectory()){
    				arr.push(files[i]);
    			}
    			iterator(++i);//注意i++不行会死循环
    		});
    	})(0);
    });
    res.end('end');
}).listen(3000,"127.0.0.1");
